#ifndef _CPP_STORY_SCENARIO_H_
#define _CPP_STORY_SCENARIO_H_

#include <string>
#include <vector>
#ifdef WIN32
#include "cppstory_win32.h"
#endif

namespace CppStory
{

class ContextPtr;
class Examples;
class Step;

#ifdef WIN32
class CPPSTORY_WIN32_API Scenario
#else
class Scenario
#endif
{
public:
    Scenario(const char* f, const int l);
    ~Scenario();

    void register_step(Step *c);
    std::vector< Step* > steps;

    void set_name(std::string n);
    const char* get_name() { return name.c_str(); }
    const char* get_file() { return file.c_str(); }
    const int get_line() { return line; }
    Step* get_cur_step() { return cur_step; }

    void create_examples();
    Examples* get_examples() { return examples; }

    bool run();
private:
    void clean_contexts();
    bool run_all_steps();

    std::string name;
    std::string file;
    int line;
    Step* cur_step;
    Examples* examples;
};

}

#endif

